[iOS 8/Xcode 6] Localization がより簡単になりました
Localization がより簡単に!
Xcode 6 では Localization (多言語化) に関する機能が増強され、より簡単に管理できるようになりました。どのような点に変更があったか確認していきましょう。
XLIFF のインポートとエクスポート
Xcode 6 では新たに XLIFF (XML Localization Interchange File Format) 形式によるローカライズデータのインポート/エクスポートがサポートされました。XLIFF はソフトウェアや文書の国際化・翻訳のために開発された XML ベースの規格です。Storyboard や InfoPlist、Localizable.string などのようなローカライズの対象となるファイルの各種設定値を言語毎に XLIFF 形式で書き出すことができます。
書き出す方法は非常に簡単で、プロジェクトを選択した状態でメニューの「Editor」>「Export For Localization...」を選ぶだけです。
こうして書き出したファイルは次のような形式になります。
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd"> <file original="Sample/Base.lproj/Main.storyboard" source-language="en" datatype="plaintext" target-language="ja"> <header> <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="6.0" build-num="6A280n"/> </header> <body> <trans-unit id="7bK-jq-Zjz.title"> <source>Master</source> <note>Class = "IBUITableViewController"; title = "Master"; ObjectID = "7bK-jq-Zjz";</note> </trans-unit> <!-- 割愛... --> </body> </file> <file original="Sample/Info.plist" source-language="en" datatype="plaintext" target-language="ja"> <header> <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="6.0" build-num="6A280n"/> </header> <body> <trans-unit id="CFBundleName"> <source>$(PRODUCT_NAME)</source> </trans-unit> <trans-unit id="CFBundleShortVersionString"> <source>1.0</source> </trans-unit> </body> </file> <file original="SampleTests/Info.plist" source-language="en" datatype="plaintext" target-language="ja"> <header> <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="6.0" build-num="6A280n"/> </header> <body> <trans-unit id="CFBundleName"> <source>$(PRODUCT_NAME)</source> </trans-unit> <trans-unit id="CFBundleShortVersionString"> <source>1.0</source> </trans-unit> </body> </file> </xliff>
アプリのローカライズだけは、開発者ではないメンバーにお願いしたり、別の企業に依頼するときなどに便利な機能かも知れませんね。
.strings ファイルへの自動書き出し
Xcode 6 から Base の .strings ファイルがソースコードから自動で生成されるようになりました。.strings ファイルは genstrings コマンドで生成する必要がありましたが、Xcode が自動で生成してくれるのは非常に嬉しいですね。
Interface Builder でのプレビュー
Interface Builder では .strings などでローカライズした言語の実際の見え方を Assistant Editor を使ってプレビューできるようになりました。
プレビューするには、まず Main.storyboard を開き Assistant Editor (ウインドウを分割して右側に出てくるウインドウ) を表示します。そしてジャンプバー (上部にあるパンくずのようなバー) をクリックすると Assistant ポップアップメニューが表示されるので「Preview」の「Main.storyboard」を開きます。
Assistant Editor 側にはプレビューが表示されるので、右下の「English」と書いてあるところをクリックします。ローカライズ済みの言語が表示されるので適当な言語を選ぶと、対象の言語での見え方がプレビューできます。
言語を指定して実行
Scheme の実行設定に言語と地域を指定できるようになりました。iOS シミュレータまたは iOS デバイスの言語設定に関わらず、指定した言語で実行することができます。
特定の言語における動作を逐一確認したい場合、その言語で実行する Scheme を作っておくと便利ですね。端末の言語設定を変えるのは面倒だったので、それを省略できるのはかなり有難いです。
まとめ
Xcode 6 で追加されたアプリのローカライズをサポートする機能は、なかなか痒いところに手が届いているなぁと思いました。便利なので覚えておきましょう!そして社内で広めましょう。
Internationalization and Localization Guide | iOS Developer Library